package com.project.game;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;

import javax.swing.JPanel;


public class Explosion {

	private JPanel scene;
	private Image image;
	private Point position;
	private boolean remove;
	// 스프라이트 애니메이션을 구현하기 위한 변수들
	private int count; // 전체 이미지의 포함된 단위 이미지의 갯수
	private int currentIndex, rowIndex, columnIndex; // 현재 표시되고 있는 단위 이미지의 순서 번호
	private int row = 3, column=3;
	private int height, width; // 단위 이미지 너비, 높이
	private long prevChangedTime; // 마지막으로 단위 이미지의 위치를 변경한 시간
	private int changespeed; // 단위 이미지를 교체하는 시간 간격
	
	// 생성자
	public Explosion(JPanel scene, Image image, int count) {
		super();
		this.scene = scene;
		this.image = image;
		this.count = count;
		currentIndex = -1;
		width = image.getWidth(null) / column ;
		height = image.getHeight(null) / row ;
		changespeed = 100;
	}

//	public Explosion(MouseAdapter mouseAdapter, Image image, int count) {
//		super();
//		this.image = image;
//		this.count = count;
//		currentIndex = -1;
//		width = image.getWidth(null) / column ;
//		height = image.getHeight(null) / row ;
//		changespeed = 70;
//	}

	public Point getPosition() {
		return position;
	}
	public void setPosition(Point position) {
		this.position = position;
	}
	
	public boolean isRemove() {
		return remove;
	}
	public void setRemove(boolean remove) {
		this.remove = remove;
	}
	
	public void update() {
		long currentTime = System.currentTimeMillis();
		if(prevChangedTime + changespeed < currentTime) {
			currentIndex++;
			rowIndex = currentIndex / row;
			columnIndex = currentIndex % column;
			if(currentIndex == row * column) {
				// currentIndex = 0; // 애니메이션 반복
				remove = true; // 원샷 애니메이션
			}
			prevChangedTime = currentTime;
		}
	}
	public void render(Graphics g) {
		if(!remove) {
			g.drawImage(image, 
					position.x, // 이미지가 그려질 화면 영역 좌상단x 
					position.y, // 이미지가 그려질 화면 영역 좌상단y
					position.x + width, // 이미지가 그려질 화면 영역 우하단x
					position.y + height, // 이미지가 그려질 화면 영역 우하단y
					columnIndex * width, // 전체 이미지에서 추출할 이미지의 좌측상단 x
					rowIndex * height,  // 전체 이미지에서 추출할 이미지의 좌측상단 y
					columnIndex * width + width, // 전체 이미지에서 추출할 이미지의 우하단 x
					rowIndex * height + height, 
					null); // 전체 이미지에서 추출할 이미지의 우하단 y
		}
	}
}
